/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Clases;

import Persistencia.Convenio;
import Persistencia.Entidad;
import Persistencia.Estudiante;
import Persistencia.ResumenSemPracProf;
import Persistencia.ResumenSemPracProfPK;
import Persistencia.Supervisor;
import Persistencia.SupervisorEntidad;
import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.http.HttpServletRequest;
import negocio.ConvenioInterface;
import negocio.EstudianteInterface;
import negocio.ResumenSemPracticaProfInterface;

/**
 *
 * @author BATAQUERO
 */
@ManagedBean
@ViewScoped
public class FResumenSemPracticaProf implements Formato, Serializable {

    
    public ResumenSemPracProf resPracProf = new ResumenSemPracProf();
    public ResumenSemPracProf resumen = new ResumenSemPracProf();
    private int periodoAcademico;
    private Date fecha;
    private String nombreEntidad;
    private String nitEntidad;
    private String telefonosEntidad;
    private String faxEntidad;
    private String direccionEntidad;
    private String nombreSupervisorEnt;
    private String cargoSupervisorEnt;
    private String telefonoSupervisorEnt;
    private String celularSupervisorEnt;
    private String nombreSupervisorUniv;
    private String correoSupevisorUniv;
    private String telefonoSupervisorUniv;
    private String celularSupervisorUniv;
    private String nombrePracticante;
    private String codigoPracticante;
    private String telefonoPracticante;
    private String celularPracticante;
    private String correoPracticante;
    private Date fechaVisitaInicial;
    private String areaTrabajo;
    private String aspectosTratadosVisIni;
    private String acuerdosRealizados;
    private String procesosEjecutados;
    private String analisisBreve;
    private String valoracionFundamentacion;
    private Date fechaVisitaFinal;
    private String aspectosTratadosVisFin;
    private String analisisActivProg;
    private String aspectosMejorarHab;
    private String horarioPracticaDe;
    private String horarioPracticaHasta;
    private int semanasTrabajadas;
    private int horasRealesSemanales;
    private int semanasDiasNoTrabajados;
    private Boolean justificados;
    private ResumenSemPracticaProfInterface resumenSemPracticaProfInterface;
    private EstudianteInterface estudianteInterface;
    private String estudianteSelected;
    private List<Estudiante> listaEstuiantes;
    private Entidad entidad;
    private Persistencia.SupervisorEntidad supervisorEntidad;
    private Supervisor supervisor;
    private Estudiante estudiante;
    @ManagedProperty(value = "#{sessionBean}")
    private SessionBean sessionBean;
    private Date horaInicio;
    private Date horaFin;
    private List<ResumenSemPracProf> resumenSemPracProfs;
    private String indexPanel;
    private ConvenioInterface convenioInterface;

    public FResumenSemPracticaProf() {
    }

    @PostConstruct // Este postconstructor es necesario para los contextos y enlazar el controlador de persistencia
    public void InicializarVariables() {
        try {
            
            InitialContext ctx = new InitialContext();
            estudianteInterface = (EstudianteInterface) ctx.lookup("EstudianteEJB");
            resumenSemPracticaProfInterface = (ResumenSemPracticaProfInterface) ctx.lookup("ResumenSemPracticaProfEJB");
            convenioInterface = (ConvenioInterface) ctx.lookup("ConvenioEJB");
            HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
            if (request.getParameter("resumenIdEstudiante") != null && request.getParameter("resumenIdSupervisor") != null && request.getParameter("resumenIdSupervisorEntidad") != null && request.getParameter("resumenIdCoordinador") != null) {
                resumen = resumenSemPracticaProfInterface.consultarResumen(new ResumenSemPracProfPK(Integer.parseInt(request.getParameter("resumenIdEstudiante").toString()), Integer.parseInt(request.getParameter("resumenIdSupervisor").toString()), Integer.parseInt(request.getParameter("resumenIdSupervisorEntidad").toString()), Integer.parseInt(request.getParameter("resumenIdCoordinador").toString())));
                resumen.getEstudiante().setConvenioList(new ArrayList<Convenio>());
                resumen.getEstudiante().getConvenioList().add(convenioInterface.consultarConvenio(resumen.getEstudiante()));
                estudiante = resumen.getEstudiante();
                SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");
                try {
                    horaInicio = sdf.parse(resumen.getHorarioPracticaDe());
                    horaFin = sdf.parse(resumen.getHorarioPracticaHsata());
                } catch (ParseException ex) {
                    Logger.getLogger(FResumenSemPracticaProf.class.getName()).log(Level.SEVERE, null, ex);
                }
            } else {
                listaEstuiantes = estudianteInterface.listarEstudiantes();
                estudiante = sessionBean.getUsuarioSession().getEstudiante();
                resumen = new ResumenSemPracProf(new ResumenSemPracProfPK(estudiante.getIdEstudiante(), estudiante.getIdSupervisor().getIdSupervisor(), estudiante.getConvenioList().get(0).getIdSupervisorEntidad().getIdSupervisorEntidad(), estudiante.getIdSupervisor().getIdCoodinadorPracticas().getIdCoodinadorPracticas()));
                resumen.setCoordinadorPracticas(estudiante.getIdSupervisor().getIdCoodinadorPracticas());
                resumen.setEstudiante(estudiante);
                resumen.setSupervisor(estudiante.getIdSupervisor());
                resumen.setSupervisorEntidad(estudiante.getConvenioList().get(0).getIdSupervisorEntidad());
                resumenSemPracProfs = resumenSemPracticaProfInterface.listarResumen();
                for (ResumenSemPracProf pracProf : resumenSemPracProfs) {
                    pracProf.getEstudiante().setConvenioList(new ArrayList<Convenio>());
                    pracProf.getEstudiante().getConvenioList().add(convenioInterface.consultarConvenio(pracProf.getEstudiante()));
                }

            }


            //        inicializarControladores();
            //        inicializarControladores();

            // Se quema el supervisor con el objetivo que cuando se haga el login se traiga dinamicamente
            //        if (estudianteSelected == 0) {
            //            listaEstuiantes.clear();
            //            // Linea de la sesion
            //            Supervisor s = supervisorJpaController.findSupervisor(3010);
            //            listaEstuiantes = s.getEstudianteList();
            //
            //        }
        } catch (NamingException ex) {
            Logger.getLogger(FResumenSemPracticaProf.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

 

    public void llenarCampos() {
    }

    public void ponerTexto(String texto) {
//        Supervisor sup = new Supervisor();
//        this.nombreEntidad = texto;
//        setNombreEntidad(nombreEntidad);
//
//        System.out.println("aqui entró.... sigue la impresion del valor que recibe");
//        System.out.println(nombreEntidad);
    }

    public void guardar(ActionEvent event) {
        resumen.setFecha(new Date());
        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");
        resumen.setHorarioPracticaDe(sdf.format(horaInicio));
        resumen.setHorarioPracticaHsata(sdf.format(horaFin));
        resumenSemPracticaProfInterface.crear(resumen);
        FacesMessage msg = new FacesMessage("Exitoso", "El formato del estudiante '" + resumen.getEstudiante().getNombresEstudiante() + "' se guardó correctamente.");
        FacesContext.getCurrentInstance().addMessage(null, msg);
    }

    public void ejecutarDiligenciar() {
        DiligenciarFormato();
    }

    public void ejecutarConsultar() {
        ConsultarFormato();
    }

    public void ejecutarAprobar() {
        AprobarFormato();
    }

    public void ejecutarEditar() {
        EditarFormato();
    }

    @Override
    public void ConsultarFormato() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.        

    }

    @Override
    public void DiligenciarFormato() {
//        Prueba p = new Prueba();
//        p = pruebaJpaController.findIdPrueba(171);
//        System.out.println(p.getNombrePrueba());
//        Estudiante e = new Estudiante();
//        e = estudianteJpaController.findIdEstudiante(80739686);
//        System.out.println(e.getApellidosEstudiante() + ' ' + e.getNombresEstudiante() + ' ' + e.getCedulaEstudiante()
//                + ' ' + e.getCorreoestudiante());
//        Entidad en = new Entidad();
//        en = entidadJpaController.findEntidad(2);
//        System.out.println(en.getNombreentidad());
//        Supervisor sup = new Supervisor();
//        sup = supervisorJpaController.findSupervisor(3010);
//        System.out.println(sup.getApellido1Supervisor());
//        nombreEntidad = sup.getApellido1Supervisor();
//        ponerTexto(nombreEntidad);
        // ResumenSemPracProf resumen = new ResumenSemPracProf();
        //resumen.setIdResSemPrac(areaTrabajo);
//            Estudiante idEstud = new Estudiante();
//            Supervisor idSuperv = new Supervisor();
//            idEstud = estudianteJpaController.findEstudiante(periodoAcademico);
//            resPracProf.setIdSupervisor(idSuperv);
//            resPracProf.setIdEstudiante(idEstud.getIdEstudiante().toString());
//            resumenSemPracticaProfJpaController.create(resPracProf); //Se insertan los datos en la base de datos
    }

    @Override
    public void AprobarFormato() {
    }

    @Override
    public void EditarFormato() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    public void addMessage(String summary) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, null);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    public int getPeriodoAcademico() {
        return periodoAcademico;
    }

    public void setPeriodoAcademico(int periodoAcademico) {
        this.periodoAcademico = periodoAcademico;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public String getNombreEntidad() {
        return nombreEntidad;
    }

    public void setNombreEntidad(String nombreEntidad) {
        this.nombreEntidad = nombreEntidad;
    }

    public String getNitEntidad() {
        return nitEntidad;
    }

    public void setNitEntidad(String nitEntidad) {
        this.nitEntidad = nitEntidad;
    }

    public String getTelefonosEntidad() {
        return telefonosEntidad;
    }

    public void setTelefonosEntidad(String telefonosEntidad) {
        this.telefonosEntidad = telefonosEntidad;
    }

    public String getDireccionEntidad() {
        return direccionEntidad;
    }

    public void setDireccionEntidad(String direccionEntidad) {
        this.direccionEntidad = direccionEntidad;
    }

    public String getNombreSupervisorEnt() {
        return nombreSupervisorEnt;
    }

    public void setNombreSupervisorEnt(String nombreSupervisorEnt) {
        this.nombreSupervisorEnt = nombreSupervisorEnt;
    }

    public String getCargoSupervisorEnt() {
        return cargoSupervisorEnt;
    }

    public void setCargoSupervisorEnt(String cargoSupervisorEnt) {
        this.cargoSupervisorEnt = cargoSupervisorEnt;
    }

    public String getTelefonoSupervisorEnt() {
        return telefonoSupervisorEnt;
    }

    public void setTelefonoSupervisorEnt(String telefonoSupervisorEnt) {
        this.telefonoSupervisorEnt = telefonoSupervisorEnt;
    }

    public String getCelularSupervisorEnt() {
        return celularSupervisorEnt;
    }

    public void setCelularSupervisorEnt(String celularSupervisorEnt) {
        this.celularSupervisorEnt = celularSupervisorEnt;
    }

    public String getFaxEntidad() {
        return faxEntidad;
    }

    public void setFaxEntidad(String faxEntidad) {
        this.faxEntidad = faxEntidad;
    }

    public String getNombreSupervisorUniv() {
        return nombreSupervisorUniv;
    }

    public void setNombreSupervisorUniv(String nombreSupervisorUniv) {
        this.nombreSupervisorUniv = nombreSupervisorUniv;
    }

    public String getCorreoSupevisorUniv() {
        return correoSupevisorUniv;
    }

    public void setCorreoSupevisorUniv(String correoSupevisorUniv) {
        this.correoSupevisorUniv = correoSupevisorUniv;
    }

    public String getTelefonoSupervisorUniv() {
        return telefonoSupervisorUniv;
    }

    public void setTelefonoSupervisorUniv(String telefonoSupervisorUniv) {
        this.telefonoSupervisorUniv = telefonoSupervisorUniv;
    }

    public String getCelularSupervisorUniv() {
        return celularSupervisorUniv;
    }

    public void setCelularSupervisorUniv(String celularSupervisorUniv) {
        this.celularSupervisorUniv = celularSupervisorUniv;
    }

    public String getNombrePracticante() {
        return nombrePracticante;
    }

    public void setNombrePracticante(String nombrePracticante) {
        this.nombrePracticante = nombrePracticante;
    }

    public String getCodigoPracticante() {
        return codigoPracticante;
    }

    public void setCodigoPracticante(String codigoPracticante) {
        this.codigoPracticante = codigoPracticante;
    }

    public String getTelefonoPracticante() {
        return telefonoPracticante;
    }

    public void setTelefonoPracticante(String telefonoPracticante) {
        this.telefonoPracticante = telefonoPracticante;
    }

    public String getCelularPracticante() {
        return celularPracticante;
    }

    public void setCelularPracticante(String celularPracticante) {
        this.celularPracticante = celularPracticante;
    }

    public String getCorreoPracticante() {
        return correoPracticante;
    }

    public void setCorreoPracticante(String correoPracticante) {
        this.correoPracticante = correoPracticante;
    }

    public Date getFechaVisitaInicial() {
        return fechaVisitaInicial;
    }

    public void setFechaVisitaInicial(Date fechaVisitaInicial) {
        this.fechaVisitaInicial = fechaVisitaInicial;
    }

    public String getAreaTrabajo() {
        return areaTrabajo;
    }

    public void setAreaTrabajo(String areaTrabajo) {
        this.areaTrabajo = areaTrabajo;
    }

    public String getAspectosTratadosVisIni() {
        return aspectosTratadosVisIni;
    }

    public void setAspectosTratadosVisIni(String aspectosTratadosVisIni) {
        this.aspectosTratadosVisIni = aspectosTratadosVisIni;
    }

    public String getAcuerdosRealizados() {
        return acuerdosRealizados;
    }

    public void setAcuerdosRealizados(String acuerdosRealizados) {
        this.acuerdosRealizados = acuerdosRealizados;
    }

    public String getProcesosEjecutados() {
        return procesosEjecutados;
    }

    public void setProcesosEjecutados(String procesosEjecutados) {
        this.procesosEjecutados = procesosEjecutados;
    }

    public String getAnalisisBreve() {
        return analisisBreve;
    }

    public void setAnalisisBreve(String analisisBreve) {
        this.analisisBreve = analisisBreve;
    }

    public String getValoracionFundamentacion() {
        return valoracionFundamentacion;
    }

    public void setValoracionFundamentacion(String valoracionFundamentacion) {
        this.valoracionFundamentacion = valoracionFundamentacion;
    }

    public Date getFechaVisitaFinal() {
        return fechaVisitaFinal;
    }

    public void setFechaVisitaFinal(Date fechaVisitaFinal) {
        this.fechaVisitaFinal = fechaVisitaFinal;
    }

    public String getAspectosTratadosVisFin() {
        return aspectosTratadosVisFin;
    }

    public void setAspectosTratadosVisFin(String aspectosTratadosVisFin) {
        this.aspectosTratadosVisFin = aspectosTratadosVisFin;
    }

    public String getAnalisisActivProg() {
        return analisisActivProg;
    }

    public void setAnalisisActivProg(String analisisActivProg) {
        this.analisisActivProg = analisisActivProg;
    }

    public String getAspectosMejorarHab() {
        return aspectosMejorarHab;
    }

    public void setAspectosMejorarHab(String aspectosMejorarHab) {
        this.aspectosMejorarHab = aspectosMejorarHab;
    }

    public String getHorarioPracticaDe() {
        return horarioPracticaDe;
    }

    public void setHorarioPracticaDe(String horarioPracticaDe) {
        this.horarioPracticaDe = horarioPracticaDe;
    }

    public String getHorarioPracticaHasta() {
        return horarioPracticaHasta;
    }

    public void setHorarioPracticaHasta(String horarioPracticaHasta) {
        this.horarioPracticaHasta = horarioPracticaHasta;
    }

    public int getSemanasTrabajadas() {
        return semanasTrabajadas;
    }

    public void setSemanasTrabajadas(int semanasTrabajadas) {
        this.semanasTrabajadas = semanasTrabajadas;
    }

    public int getHorasRealesSemanales() {
        return horasRealesSemanales;
    }

    public void setHorasRealesSemanales(int horasRealesSemanales) {
        this.horasRealesSemanales = horasRealesSemanales;
    }

    public int getSemanasDiasNoTrabajados() {
        return semanasDiasNoTrabajados;
    }

    public void setSemanasDiasNoTrabajados(int semanasDiasNoTrabajados) {
        this.semanasDiasNoTrabajados = semanasDiasNoTrabajados;
    }

    public Boolean getJustificados() {
        return justificados;
    }

    public void setJustificados(Boolean justificados) {
        this.justificados = justificados;
    }

    //estos metodos getter y setter son el resPracProf
    // Se usan para cargar los campos desde el formulario y cargarlos como un todo
    // ver mas arriba linea 93
    public ResumenSemPracProf getResPracProf() {
        return resPracProf;
    }

    public void setResPracProf(ResumenSemPracProf resPracProf) {
        this.resPracProf = resPracProf;
    }

    public String getEstudianteSelected() {
        return estudianteSelected;
    }

    public void setEstudianteSelected(String estudianteSelected) {
        this.estudianteSelected = estudianteSelected;
    }

    public List<Estudiante> getListaEstuiantes() {
        return listaEstuiantes;
    }

    public void setListaEstuiantes(List<Estudiante> listaEstuiantes) {
        this.listaEstuiantes = listaEstuiantes;
    }

    public Entidad getEntidad() {
        return entidad;
    }

    public void setEntidad(Entidad entidad) {
        this.entidad = entidad;
    }

    public SupervisorEntidad getSupervisorEntidad() {
        return supervisorEntidad;
    }

    public void setSupervisorEntidad(SupervisorEntidad supervisorEntidad) {
        this.supervisorEntidad = supervisorEntidad;
    }

    public Supervisor getSupervisor() {
        return supervisor;
    }

    public void setSupervisor(Supervisor supervisor) {
        this.supervisor = supervisor;
    }

    public Estudiante getEstudiante() {
        return estudiante;
    }

    public void setEstudiante(Estudiante estudiante) {
        this.estudiante = estudiante;
    }

    public ResumenSemPracProf getResumen() {
        indexPanel = "0";
        return resumen;
    }

    public void setResumen(ResumenSemPracProf resumen) {
        this.resumen = resumen;
    }

    public SessionBean getSessionBean() {
        return sessionBean;
    }

    public void setSessionBean(SessionBean sessionBean) {
        this.sessionBean = sessionBean;
    }

    public Date getHoraInicio() {
        return horaInicio;
    }

    public void setHoraInicio(Date horaInicio) {
        this.horaInicio = horaInicio;
    }

    public Date getHoraFin() {
        return horaFin;
    }

    public void setHoraFin(Date horaFin) {
        this.horaFin = horaFin;
    }

    public List<ResumenSemPracProf> getResumenSemPracProfs() {
        return resumenSemPracProfs;
    }

    public void setResumenSemPracProfs(List<ResumenSemPracProf> resumenSemPracProfs) {
        this.resumenSemPracProfs = resumenSemPracProfs;
    }

    public String getIndexPanel() {
        return indexPanel;
    }

    public void setIndexPanel(String indexPanel) {
        this.indexPanel = indexPanel;
    }

    private void inicializarControladores() {
        FacesContext context = FacesContext.getCurrentInstance();
//        pruebaJpaController = (PruebaJpaController) context.getELContext().getELResolver().getValue(context.getELContext(), null, "pruebaJpaController");
//        estudianteJpaController = (EstudianteJpaController) context.getELContext().getELResolver().getValue(context.getELContext(), null, "estudianteJpaController");
//        supervisorJpaController = (SupervisorJpaController) context.getELContext().getELResolver().getValue(context.getELContext(), null, "supervisorJpaController");
//        entidadJpaController = (EntidadJpaController) context.getELContext().getELResolver().getValue(context.getELContext(), null, "entidadJpaController");
//        supervisorEntidadJpaController = (SupervisorEntidadJpaController) context.getELContext().getELResolver().getValue(context.getELContext(), null, "supervisorEntidadJpaController");
//        convenioJpaController = (ConvenioJpaController) context.getELContext().getELResolver().getValue(context.getELContext(), null, "convenioJpaController");
    }
}
